using Order.Domain.Enum;
using System.ComponentModel.DataAnnotations;

namespace Order.Api.Read.Dto.Order
{
    /// <summary>
    /// 退款详情DTO
    /// </summary>
    public class RefundDetailDto
    {
        /// <summary>
        /// 退款ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 服务编号（退款单号）
        /// </summary>
        public string? RefundNo { get; set; }

        /// <summary>
        /// 申请状态
        /// </summary>
        public RefundStatusEnum? RefundStatus { get; set; }

        /// <summary>
        /// 申请状态描述
        /// </summary>
        public string? RefundStatusDesc { get; set; }

        /// <summary>
        /// 申请时间
        /// </summary>
        public DateTime? CreateTime { get; set; }

        /// <summary>
        /// 用户名（患者手机号）
        /// </summary>
        public string? UserPhone { get; set; }

        /// <summary>
        /// 订单编号
        /// </summary>
        public string? OrderNo { get; set; }

        /// <summary>
        /// 订单金额
        /// </summary>
        public decimal? OrderAmount { get; set; }

        /// <summary>
        /// 实际退款金额
        /// </summary>
        public decimal? RefundAmount { get; set; }

        /// <summary>
        /// 退款方式
        /// </summary>
        public RefundMethodEnum? RefundMethod { get; set; }

        /// <summary>
        /// 退款方式描述
        /// </summary>
        public string? RefundMethodDesc { get; set; }

        /// <summary>
        /// 退款类型（订单类型）
        /// </summary>
        public OrderTypeEnum? OrderType { get; set; }

        /// <summary>
        /// 退款类型描述
        /// </summary>
        public string? OrderTypeDesc { get; set; }

        /// <summary>
        /// 退款来源
        /// </summary>
        public RefundSourceEnum? RefundSource { get; set; }

        /// <summary>
        /// 退款来源描述
        /// </summary>
        public string? RefundSourceDesc { get; set; }

        /// <summary>
        /// 处理时间
        /// </summary>
        public DateTime? ProcessedTime { get; set; }

        /// <summary>
        /// 处理人
        /// </summary>
        public string? ProcessedName { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remark { get; set; }
    }
}